package com.hnevc.xiewenguang;

import java.util.Scanner;

public class Example03 {
    /**
     * 传入一个无序的整形数组，找出其中最小的数，将它与第 1 个输入的数交换位置
     *
     * @param intArrays
     *            整形数组
     * @return 整形数组
     */
    public static int[] SecNum(int[] intArrays) {
        int[] intArr = intArrays;
        int intMin = intArr[0];// 保存第一个的元素的值
        int x = 0;// 保存最小的元素下标
        // 循环对比数组中的值 ，升序排列
        for (int i = 0; i < intArr.length; i++) {
            // 将第i个值与之前的值对比，如果比第i个值小，则保存元素下标，否则跳出循环.
            for (int j = i; j > 0; j--) {
                // 判断如果第j-1个数大于第j个数，则保存元素下标,与小于i下标的所有数都进行判断
                if (intArr[j - 1] > intArr[j]) {
                    x = j;
                } else {
                    x = j - 1;
                }
            }

        }
        // 找出其中最小的数,将它与第 1 个输入的数交换位置之后输出 这些数
        intArr[0] = intArr[x];
        intArr[x] = intMin;
        return intArr;
    }

    /**
     * 传入字符串数组，返回数字数组
     *
     * @param str
     *            字符串String类型数组
     * @return int整形数组
     */
    public static int[] ParseInt(String[] str) {
        int[] intCount = new int[str.length];
        for (int i = 0; i < str.length; i++) {
            if (!str[i].matches("[0-9]{1,}")) {
                System.out.println("输入的数中有非数字");
                return null;
            }
            intCount[i] = Integer.valueOf(str[i]);
        }
        return intCount;
    }
    /**
     * 主方法
     * @param args
     */
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 输入20个不同的整数
        System.out.println("输入20个不同的整数,在输入整数时各整数之间用空隔分隔:");
        String strCount = in.nextLine();
        String[] strMath = strCount.split("\\s+");// 使用正则表达式判断空格符号进行分割
        if (ParseInt(strMath) == null) {
            return;
        }
        int[] intCount = ParseInt(strMath);
        // 获取结果
        intCount = SecNum(intCount);
        //打印结果，前20个整数
        for (int i = 0; i < intCount.length; i++) {
            System.out.print(intCount[i] + " ");
            if (i >= 20) {
                break;
            }
        }
    }

}

